﻿#ifndef TCPSESSION_H
#define TCPSESSION_H

#include <iostream>
#include <string>
#include <vector>
#include "Thread.h"
#include "tcpserver.h"
#include "type_def.h"
#include "json11.hpp"

using namespace std;
using namespace json11;

// class TcpSession;

extern vector<clientData *> *clientArray; // 用户数据数组
extern pthread_mutex_t mutex;             // 互斥锁

class TcpSession : public Thread
{
private:
  clientData *cd;

public:
  enum MSG_TYPE
  {
    LOGIN = 1,
    COMMODITY,
    ORDER,
    QUIT,
    EXIT,
    AMOUNT,
  };
  TcpSession(clientData *cd);
  virtual ~TcpSession();
  void run() override;
  void closeConnect();
  void displayAllClient();                          // 显示所有客户端信息
  string getValueStr(string *msg, const char *key); // 从json中获取指定key的string value
  int getValueInt(string *msg, const char *key);    // 从json中获取指定key的int value
  void serverSingleMsg(string &msg);                // 单发数据
  bool isSameDay(string &targetTime, string &date); // 判断目标时间是不是指定日期
  void getSamedayAttendance(string &json);          // 获取一个用户当天考勤记录
  void insertAttendanceRecord(string &json);        // 增加一条考勤记录
  void getAttendanceInfoList(string &json);         // 获取考勤列表(分页)
  void userRegister(string &json);                  // 用户注册
  void getUserInfoList(string &json);               // 获取用户列表(分页)
  void getUserInfoCount(string &json);              // 获取用户数据总量
  void userDelete(string &json);                    // 删除用户
};

#endif // TCPSESSION_H
